jdtree = {
    init(arr) {
        this.data = {
            typearr: arr
        }

        this.initData();
        this.bindEvent();
    },
    // 初始化树
    initData() {
        var str="";
        var forTree = function(o){
            for(var i=0;i<o.length;i++){
                var urlstr = "";
                try{
                    if (o[i]["child"]) { 
                        if (o[i]["isOpened"]) {
                            urlstr = `<li class="has-child ${o[i]["disabled"]?'disabled':''}" 
                                data-disabled=${o[i]["disabled"]?true:false} data-name=${o[i]["name"]} 
                                data-code=${o[i]["code"]} data-level=${o[i]["level"]?o[i]["level"]:0}> 
                                <i class="is-opened"></i><span>${o[i]["name"]}</span>
                                <ul class="j-addul" style="display:block;">`;
                        } else {
                            urlstr = `<li class="has-child ${o[i]["disabled"]?'disabled':''}" 
                                data-disabled=${o[i]["disabled"]?true:false} data-name=${o[i]["name"]} 
                                data-code=${o[i]["code"]} data-level=${o[i]["level"]?o[i]["level"]:0}>
                                <i></i><span>${o[i]["name"]}</span>
                                <ul class="j-addul" style="display:none;">`;
                        }
                    } else {
                        urlstr = `<li class="${o[i]["disabled"]?'disabled':''}" 
                            data-disabled=${o[i]["disabled"]?true:false} data-name=${o[i]["name"]} 
                            data-code=${o[i]["code"]} data-level=${o[i]["level"]?o[i]["level"]:0}><span>${o[i]["name"]}</span><ul>`;
                    }
                    str += urlstr;
                    if(o[i]["child"] != null){
                        forTree(o[i]["child"]);
                    }
                    str += "</ul>";
                }catch(e){}
            }
            return str;
        };
        // console.log(forTree(typearr))
       $("#jdul_tree").html(forTree(this.data.typearr));
    },
    bindEvent() {
        let that = this
        $("#jdul_tree li i").click(function() {
            if ($(this).hasClass('is-opened')) {
                $(this).removeClass('is-opened')
                $(this).siblings('.j-addul').hide()
            }else {
                $(this).addClass('is-opened')
                $(this).siblings('.j-addul').show()
            }
        })
        $("#jdul_tree li span").click(function() {
            if ($(this).parent().data('disabled')) {
                return
            }
            let code = $(this).parent().data("code")
            let name = $(this).parent().data("name")
            let afun = (dom,ischeck) => {
                // 处理 当前节点的父节点
                if (ischeck) {
                    if ($(dom).siblings('ul').attr('class') === 'j-addul') {
                        afun($(dom).parent().parent().siblings('span'),true)
                    }
                    let r = ($(dom).siblings('ul').find('li')).filter((i,ele) => {
                        return $(ele).find('span').attr('class') === 'checked'
                    })
                    if (r && r.length > 0) {
                        $(dom).removeClass('ban-checked')
                    } else {
                        $(dom).removeClass('ban-checked').removeClass('checked')
                    }
                    // console.log(r.length && r[0].innerHTML)
                } else {
                    if ($(dom).siblings('ul').attr('class') === 'j-addul') {
                        afun($(dom).parent().parent().siblings('span'),false)
                    }
                    let r = ($(dom).siblings('ul').find('li')).filter((i,ele) => {
                        return $(ele).find('span').attr('class') === 'checked'
                    })
                    if (r && r.length > 0) {
                        $(dom).addClass('ban-checked')
                        console.log($(dom)[0].innerHTML)
                        console.log(`${r.length}====${($(dom).siblings('ul').find('li')).length}`)
                        if (r.length === ($(dom).siblings('ul').find('li')).length) {
                            $(dom).removeClass('ban-checked').addClass('checked')
                        }
                    }
                }
            }
            if ($(this).hasClass('checked')) {
                $(this).removeClass('ban-checked').removeClass('checked')
                if ($(this).siblings('ul').attr('class') === 'j-addul') { // li当前有ul节点
                    $.each($(this).siblings('ul').find('li'),(i,ele) => {
                        $(ele).find("span").removeClass('checked')
                    })
                }
                afun($(this).parent().parent().siblings('span'),true)
            }else {
                $(this).removeClass('ban-checked').addClass('checked')
                if ($(this).siblings('ul').attr('class') === 'j-addul') { // li当前有ul节点
                    $.each($(this).siblings('ul').find('li'),(i,ele) => {
                        $(ele).find("span").removeClass('ban-checked').addClass('checked')
                    })
                }
                afun($(this).parent().parent().siblings('span'),false)
            }
            //               span     li       ul      li
            // console.log($(this).parent().parent().parent().find('span')eq(0))
            // console.log($(this).parent().siblings().find('span'))

            console.log(that.getCheckNames())
            // 报警类型设置 选择的name
            $(".alarm-value").text(that.getCheckNames())
        })
    },
    // 获取选中id
    getCheckIds() {
        let arr = []
        let a = (ele) => {
            $.each($(ele),(i,dom) => {
                if ($(dom).find('ul').attr('class') === 'j-addul') {
                    a($(dom).find('ul').find('li'))
                }
                if ($(dom).find('span').attr('class') === 'checked') {
                    arr.push($(dom).data('code'))
                }
            })
        }
        a("#jdul_tree li")
        let idstr = ''
        Array.from(new Set(arr)).forEach(item => {
            idstr += item + ','
        })
        return idstr.slice(0,-1)
    },
    // 获取选中名字
    getCheckNames() {
        let arr = []
        let a = (ele) => {
            $.each($(ele),(i,dom) => {
                if ($(dom).find('ul').attr('class') === 'j-addul') {
                    a($(dom).find('ul').find('li'))
                }
                if ($(dom).find('span').attr('class') === 'checked') {
                    arr.push($(dom).data('name'))
                }
            })
        }
        a("#jdul_tree li")
        let idstr = ''
        Array.from(new Set(arr)).forEach(item => {
            idstr += item + ','
        })
        return idstr.slice(0,-1)
    },
    // 菜单权限 选择level=6的
    getCheckLevel() {
        let arr = []
        let a = (ele) => {
            $.each($(ele),(i,dom) => {
                if ($(dom).find('ul').attr('class') === 'j-addul') {
                    a($(dom).find('ul').find('li'))
                }
                if ($(dom).find('span').attr('class') === 'checked') {
                    if ($(dom).data('level') == 6) {
                        arr.push($(dom).data('code'))
                    }
                }
            })
        }
        a("#jdul_tree li")
        return Array.from(new Set(arr))
    },
    // 回显选中的check
    setChecked(codes) {
        let a = (ele) => {
            $.each($(ele),(i,dom) => {
                if ($(dom).find('ul').attr('class') === 'j-addul') {
                    a($(dom).find('ul').find('li'))
                }
                codes.split(',').forEach(code => {
                    if ($(dom).data('code') == code ) {
                        $(dom).find('span').addClass('checked')
                        let r = ($(dom).siblings('li')).filter((li,eleli) => {
                            return $(eleli).find('span').attr('class') === 'checked'
                        })
                        if (r) {
                            let b = (ul) => {
                                if ($(ul).parent().parent().attr('class') === 'j-addul') {
                                    b($(ul).parent().parent())
                                }
                                if (r.length === ($(dom).siblings('li')).length) {
                                    $(dom).parent().parent().children('span').removeClass('ban-checked').addClass('checked')
                                    
                                    $(ul).siblings('span').removeClass('ban-checked').addClass('checked')
                                } else {
                                    $(dom).parent().parent().children('span').addClass('ban-checked')
                                    $(ul).siblings('span').addClass('ban-checked')
                                }
                            }
                            b($(dom).parent().parent().parent())

                            // if (r.length === ($(dom).siblings('li')).length) {
                            //     $(dom).parent().parent().children('span').removeClass('ban-checked').addClass('checked')
                            // } else {
                            //     $(dom).parent().parent().children('span').addClass('ban-checked')
                            // }
                        }
                    }
                })
                
            })
        }
        a("#jdul_tree li")
    },
    // 重置
    setReset() {
        let a = (ele) => {
            $.each($(ele),(i,dom) => {
                if ($(dom).find('ul').attr('class') === 'j-addul') {
                    a($(dom).find('ul').find('li'))
                }
                if ($(dom).find('span').attr('class') === 'checked' || $(dom).find('span').attr('class') === 'ban-checked') {
                    $(dom).find('span').removeClass('checked').removeClass('ban-checked')
                }
            })
        }
        a("#jdul_tree li")
    }
}


